In artificial intelligence, a fluent is a condition that can change over time. In logical approaches to reasoning about actions, fluents can be represented in first-order logic by predicates having an argument that depends on time. For example, the condition “the box is on the table”, if it can change over time, cannot be represented by ; a third argument is necessary to the predicate to specify the time: means that the box is on the table at time . This representation of fluents is used in the situation calculus using the sequence of the past actions in place of the current time.
A fluent can also be represented by a function, dropping the time argument. For example, that the box is on the table can be represented by , where is a function and not a predicate. Converting predicates as functions in first-order logic is called reification; for this reason, fluents represented by functions are said to be reified. When using reified fluents, a separate predicate is necessary to tell when a fluent is actually true or not. For example, means that the box is actually on the table at time , where the predicate is the one that tells when fluents are true. This representation of fluents is used in the event calculus, in the fluent calculus, and in the features and fluents logics.
Some fluents can be represented as functions in a different way. For example, the position of a box can be represented by a function whose value is the object the box is standing on at time . Conditions that can be represented in this way are called functional fluents. Statements about the values of such functions can be given in first order logic with equality using literals such as . Some fluents are represented this way in the situation calculus.